我的问题是完成子进程,我使用多进程库并且在一台机器上有返回或退出行,进程在连接之前死亡,但在另一台机器上没有。过程总是在增长,但在完成任务后,它们都不会完成。在这两台机器中,python的版本都是2.7.3rc2。在
semaphore_processes_limit = BoundedSemaphore(value=PROCS_LIMIT)
# Starting searches
procs = []
for word in words:
semaphore_processes_limit.acquire()
p = Process(target=searching, args=(word,))
procs.append(p)
p.start()
# Wait for all worker processes to finish
for p in procs:
p.join()
# Process
def searching(word):
return # or exit(0)
谢谢。在
最后是服务器错误,但我不知道是什么。在
在这里,我写了kugg的示例,其中包含信号量的释放,以便可以使用较低的PROCS_限制:
服务器有12个CPU(Intel(R)Core(TM)i7-3930K CPU@3.20GHz,1200 MHz),并安装了GNU/Linux Debian Weezy。在
我暂时的丑陋解决方案是:
嗨,我试着在这两台机器上重现同样的问题:
Python2.6.7(r267:888502012年2月2日,23:50:20)Cygwin on Vista
Python2.7.3(默认值,2012年8月1日,05:16:07)Ubuntu 12.04
它们都在p.join()之后正常完成。在
解释素1: 但是,如果我把PROCS_限制降低到小于len(单词)的数字,最后一个进程就不能完成。在
说明2: 信号量可以在不同的主机操作系统上进行不同的处理。从而产生不同的结果。 请参阅本页顶部的警告:http://docs.python.org/2/library/multiprocessing.html
以前,我在Cygwin上的python中遇到过子进程模块的问题,因为缺少线程支持。在
你能描述一下你正在运行的机器类型和操作系统吗?在
这是我对您的代码所做的修改以使其运行:
相关问题 更多 >
编程相关推荐