草庐IT

thread_pool_size

全部标签

python multiprocessing.Pool kill *特定*长时间运行或挂起的进程

我需要执行一个包含许多并行数据库连接和查询的池。我想使用multiprocessing.Pool或concurrent.futuresProcessPoolExecutor。Python2.7.5在某些情况下,查询请求花费的时间太长或永远不会完成(挂起/僵尸进程)。我想从超时的multiprocessing.Pool或concurrent.futuresProcessPoolExecutor中终止特定进程。这是一个如何终止/重新生成整个进程池的示例,但理想情况下我会尽量减少CPU抖动,因为我只想终止在超时秒后未返回数据的特定长时间运行的进程。由于某些原因,在返回并完成所有结果后,下面的

python - Python Threading.Event半忙等待更好的解决方案

我使用的是非常标准的Threading.Event:主线程到达一个运行循环的点:event.wait(60)其他人阻塞请求直到回复可用,然后发起:event.set()我希望主线程选择40秒,但事实并非如此。来自Python2.7源代码Lib/threading.py:#Balancingact:Wecan'taffordapurebusyloop,sowe#havetosleep;butifwesleepthewholetimeouttime,#we'llbeunresponsive.Theschemeheresleepsvery#littleatfirst,longerastime

python - 我应该每次都创建一个新的 Pool 对象还是重复使用一个?

我正在尝试了解Python的multiprocessing.Pool对象的最佳实践。在我的程序中,我经常使用Pool.imap。通常,每次我并行启动任务时,我都会创建一个新的池对象,然后在完成后将其关闭。我最近遇到了提交到池中的任务数少于进程数的挂起。奇怪的是,它只发生在我的测试管道中,它之前运行了很多东西。单独运行测试并没有导致手牌。我认为这与制作多个池有关。我真的很想找到一些资源来帮助我了解使用Python多处理的最佳实践。具体来说,我目前正在尝试了解制作多个池对象与仅使用一个池对象的含义。 最佳答案 当您创建一个工作进程池时,

python - `context` 中的 `multiprocessing.pool.Pool` 参数是什么意思?

context是classmultiprocessing.pool.Pool构造函数中的可选参数。Documentation只说:contextcanbeusedtospecifythecontextusedforstartingtheworkerprocesses.Usuallyapooliscreatedusingthefunctionmultiprocessing.Pool()orthePool()methodofacontextobject.Inbothcasescontextissetappropriately.它没有阐明什么是“上下文对象”,为什么classPool构造函数

Python:来自 `threading` 和 `multiprocessing` 的锁可以互换吗?

threading模块中的锁是否可以与multiprocessing模块中的锁互换? 最佳答案 您通常可以互换使用这两者,但您需要了解其中的差异。例如,multiprocessing.Event由命名信号量支持,它对应用程序下的平台敏感。Multiprocessing.Lock由Multiprocessing.SemLock支持-因此它需要命名信号量。本质上,您可以互换使用它们,但是使用多进程的锁会引入一些对应用程序的平台要求(即,它不能在BSD上运行:)) 关于Python:来自`th

python - twisted + gtk : should I run GUI things in threads, 还是在 react 器线程中?

根据我对twisted的理解,在react器线程中运行的任何东西都不应阻塞。所有阻塞事件都应委托(delegate)给其他线程,以便在它们完成时将回调触发回react器线程。那么这也适用于gtk吗?例如,如果连接...失败,我想显示“连接失败”消息。我这样做吗:defconnectionFailed(self,reason):dlg=gtk.MessageDialog(type=gtk.MESSAGE_ERROR,buttons=gtk.BUTTONS_CLOSE,message_format="Couldnotconnecttoserver:\n%s"%(reason.getErro

python - 'index 0 is out of bounds for axis 0 with size 0' 是什么意思?

我是python和numpy的新手。我运行了我编写的代码,我收到了这条消息:'索引0超出了大小为0的轴0的范围'没有上下文,我只想弄清楚这是什么意思。问这个问题可能很愚蠢,但是轴0和大小0是什么意思?索引0表示数组中的第一个值..但我无法弄清楚轴0和大小0是什么意思。“数据”是一个文本文件,在两列中包含大量数字。x=np.linspace(1735.0,1775.0,100)column1=(data[0,0:-1]+data[0,1:])/2.0column2=data[1,1:]x_column1=np.zeros(x.size+2)x_column1[1:-1]=xx_colum

Exception in thread “main“ java.lang.NoSuchMethodError: com.google.comon.base.Preconditions.checkArg

hadoop-3.1.3hbase-2.2.2-bin一、问题描述:在学习林子雨老师编写的《Spark编程基础》时使用如下命令运行jar包读取HBase时出现如下错误:Exceptioninthread“main”java.lang.NoSuchMethodError:com.google.comon.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/object;)v二、问题分析:对此问题在配置hive时也有出现,问题主要是虚拟机内HBase,Spark,Hadoop三者的guava版本不一致导致的。在Hive的安装

python - 如何杀死多进程中的所有 Pool worker?

我想停止一个worker的所有线程。我有一个有10个worker的线程池:defmyfunction(i):print(i)if(i==20):sys.exit()p=multiprocessing.Pool(10,init_worker)foriinrange(100):p.apply_async(myfunction,(i,))我的程序不会停止,其他进程会继续工作,直到完成所有100次迭代。我想从调用sys.exit()的线程内部完全停止池。目前的编写方式只会停止调用sys.exit()的worker。 最佳答案 这没有按您预期

Python 多处理 pool.map 引发 IndexError

我已经使用python/cython开发了一个实用程序,可以对CSV文件进行排序并为客户端生成统计信息,但是调用pool.map似乎会在我的映射函数有机会执行之前引发异常。对少量文件进行排序似乎按预期运行,但随着文件数量增加到10,我在调用pool.map后得到以下IndexError。有没有人碰巧认识到以下错误?非常感谢任何帮助。虽然代码处于NDA之下,但用例非常简单:代码示例:defsort_files(csv_files):pool_size=multiprocessing.cpu_count()pool=multiprocessing.Pool(processes=pool_s