Articles of python multiprocessing

Python多处理使用共享variables的Pool.apply_async(值)

对于我的大学项目,我试图开发一个基于python的stream量生成器。我在vmware上创build了2个CentOS机器,我使用1作为我的客户机,1作为我的服务器机器。 我使用IP别名技术来增加客户端和服务器的数量,只使用一台客户机/服务器机器。 现在,我已经在客户机上创build了50个IP别名,在我的服务器上创build了10个IP别名。 我也使用多处理模块来从所有50个客户端并发地向所有10个服务器产生通信量。 我也在我的服务器上开发了几个configuration文件(1kb,10kb,50kb,100kb,500kb,1mb)(我在使用Apache服务器时在/ var / www / html目录中),并使用urllib2向这些configuration文件发送请求我的客户机。 我使用httplib + urllib2首先绑定到任何一个源别名ip,然后使用urllib2从这个ip发送请求。 这里要增加我的TCP连接数 ,我正在尝试使用multiprocessing.Pool.apply_async模块。 但是我在运行脚本的时候遇到了这个错误“RuntimeError:同步对象只能通过inheritance在进程之间共享”。 经过一些debugging,我发现这个错误是由于使用multiprocessing.Value引起的。 但我想分享我的进程之间的一些variables,我也想增加我的TCP连接数。 在这里可以使用其他模块(multiprocessing.Value除外)来共享一些常用variables吗? 或者有没有其他的解决scheme,这个查询? ''' Traffic Generator Script: Here I have used IP Aliasing to create multiple clients on single vm machine. Same I have done on server side to create multiple servers. I have around 50 clients and […]

为什么我的Python应用程序停滞在“系统”/内核CPU时间

首先我不确定是否应该把这个作为一个Ubuntu问题或这里。 但我猜测这是一个Python问题,而不是一个OS问题。 我的Python应用程序运行在64位核心AMD服务器上的Ubuntu之上。 它通过ctypes呼叫一个.so来从networking上的5 GigE摄像机中提取图像,然后处理它们。 我在我的应用程序中看到频繁的暂停,导致相机的帧被外部相机库丢弃。 为了进行debugging,我使用了stream行的psutil Python包,每隔0.2秒在一个单独的线程中注销CPU统计信息。 我在那个线程中睡了0.2秒,当这个睡眠时间更长的时候,我也看到相机的镜头被丢弃了。 我已经看到了长达17秒的停顿! 我的大多数处理是在OpenCV或Numpy(都释放GIL)或在应用程序的一部分multiprocessing.Pool与59进程(这是为了解决Python的GIL)。 我的debugging日志logging在暂停发生时,在我的进程的很multithreading上显示了非常高的“系统”(即内核)CPU时间。 例如。 我看到的CPU时间如下(通常每0.2秒),然后突然一个大的跳跃('进程'的数字在CPU利用率,即1个CPU完全使用将1,Linux top显示123%将1.2): Process user | Process system | OS system % | OS idle % 19.9 | 10.5 | 6 | 74 5.6 | 2.3 | 4 | 87 6.8 | 1.7 | 11 | 75 4.6 | 5.5 | 43 | […]

多重处理在Ubuntu中工作,而不在Windows中

我试图使用这个例子作为我的cherrypy应用程序的排队系统的模板。 我能够将其从Python 2转换为Python 3( from Queue import Empty变为from queue import Empty ),并在Ubuntu中执行它。 但是,当我在Windows中执行它,我得到以下错误: F:\workspace\test>python test.py Traceback (most recent call last): File "test.py", line 112, in <module> broker.start() File "C:\Anaconda3\lib\multiprocessing\process.py", line 105, in start self._popen = self._Popen(self) File "C:\Anaconda3\lib\multiprocessing\context.py", line 212, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "C:\Anaconda3\lib\multiprocessing\context.py", line 313, in _Popen return Popen(process_obj) File "C:\Anaconda3\lib\multiprocessing\popen_spawn_win32.py", line […]