• 使用多重处理间歇性地保存文件

    我有一个测试装置,可以通过串行方式以10kHz触发消息。 我正在尝试使用Python脚本记录这些内容并将其保存到.csv,但是我发现如果我想长时间运行测试(数小时或数天),则当我尝试将所有内容存储在一个列表,并在测试完成后将其保存。 我试图定期将结果拆分并保存到较小的文件中,但这会在文件之间造成延迟,而我会丢失一些串行消息,这并不是很好。 我的下一个方法是使用多重处理来建立一个缓冲区系统,在该系统中,我将串行消息存储到缓冲区A中,同时将缓冲区B保存到单独的.csv文件中,然后在它们之间来回切换直到测试完成。...
  • 读取文件时Python多处理池卡住

    在我的主脚本中,我首先执行一个函数get_files(),该函数产生并保存以下输出: file1.pkl file2.pkl file3.pkl file4.pkl 然后,我想使用pythons multiprocessing模块处理文件。这是我的main.py的内容 import pandas as pd import multiprocessing def get_files(filename): # get some data for i in range(4): d...
  • 循环中的多处理,“池未运行”错误

    我试图循环运行一些计算,每个计算都会创建,使用和关闭一个池。但是计算仅运行一次,然后引发错误:“池未运行”。当然,旧的没有运行,但是不应该创建新的吗? 下面是一个简化的示例,类似于我的代码。更奇怪的是,在我的实际代码计算中,崩溃之前运行了7次,所以我真的很困惑是什么问题。任何建议表示赞赏! from pathos.multiprocessing import ProcessingPool as Pool def add_two(number): return (number + 2) def ...
  • 使用multiprocessing.manager的问题

    我在使用经理时遇到了一些麻烦。我想让两个进程访问一个列表,一个写作,一个阅读。但是数据即将损坏,因此我尝试举一个例子在这里发布。现在,我有另一个问题。我将列表作为参数传递给函数,但代码不起作用,并说我传递的是两个参数,而不是一个。这是代码: 导入多处理 def mde(dad): for i in range(100): for j in range(10): dad[0] = i dad[1] = j def mda(dad): ...
  • 如何在PyQt5中使用多处理并防止打开多个GUI

    我有以下代码,当我只需双击运行文件时,它就可以正常工作。但是,当我使用Pyinstaller将其转换为exe时,在单击GUI中的按钮时,它将为每个进程打开多个GUI窗口。 from PyQt5 import uic, QtWidgets from CurrentChains import processchain import os import sys import threading def alltask(): x = threading.Thread(target=processchai...
  • 在多处理中,每个进程在CPython中都获得自己的GIL是真的吗?与创建新的运行时有何不同?

    有什么需要注意的地方吗?我有几个与此有关的问题。 创建更多的GIL有多昂贵?与创建单独的python运行时有何不同?一旦创建了新的GIL,它将按照该过程的要求从头开始创建所有内容(对象,变量,堆栈,堆),还是在当前堆中创建所有副本并创建堆栈? (如果垃圾回收在相同的对象上工作,则垃圾回收会发生故障。)是否将正在执行的代码段也复制到新的CPU内核上?我还可以将一个GIL与一个CPU内核关联吗? 现在复制内容是一项占用大量CPU的任务(如果我做错了,请纠正我),决定是否进行多处理的门槛是多少? PS:我说的是C...
  • 仅在Ubuntu下,多处理代码在调试模式下失败

    以下代码是用于尝试进行进程内通信的样板代码。 在Windows(调试和运行配置)和Ubuntu(运行配置)下的Pycharm中,它可以正常工作。 仅在Pycharm / Ubuntu / Debug模式下,才会抛出以下可见的异常。我该如何更改代码(或环境变量)以避免这些异常? 现有环境变量: PYTHONUNBUFFERED=1;PYDEVD_USE_CYTHON=NO;PYDEVD_USE_FRAME_EVAL=NO 代码: import multiprocessing as mp import num...
  • 如何在多处理中将锁用作互斥锁?

    我想要两个过程,一个在同一个变量上进行写操作,一个在同一个变量上进行读操作。写入的数据是这样的: [0, 0] [0, 1] [1, 0] [1, 1] [2, 0] [2, 1] [3, 0] [3, 1] [4, 0] [4, 1] [5, 0] [5, 1] [6, 0] [6, 1] [7, 0] [7, 1] [8, 0] [8, 1] [9, 0] [9, 1] 但是我遇到了麻烦,因为读取过程是在变量更改之间进行读取,形成新的对,因此我想使用Lock / Mutex来防止这种情况再次发生。我想...
  • 在Python上下文中什么是运行时?它由什么组成?

    In context to this question What is “runtime”? (https://stackoverflow.com/questions/3900549/what-is-runtime/3900561) 我试图了解python运行时将由什么组成。我的猜测是: 包含所有运行时变量的python进程。 吉尔 底层解释器代码(CPython等)。 现在,如果这是正确的,我们可以说python中的多处理会创建多个运行时,而python进程是我们可以直接与运行时相关的东西吗? (...
  • C ++中的Python进程池等效项

    How to create a processes pool (or threads) in C++ in the simplest manner as process pool in python like in the snippet. p=multiprocessing.Pool() result=p.map(function,arguments_list) 如果没有明确的等效项,那么如何使用C ++中的不同参数一次启动多个线程来做完全相同的事情?
  • 如何实现Python的多处理池以转换成千上万个文件

    我有一个Python脚本,该脚本读取包含10,000多个DBF文件的目录,因此可以将它们转换为CSV。我想将这个任务简化,而不是单独转换每个文件。我已经阅读了Python的多处理模块,尽管在执行此任务时遇到了一些麻烦。具体来说,我想使用Pool类在CPU内核之间分配工作负载。 到目前为止,这是我的代码: import os from dbfread import DBF import pandas as pd import multiprocessing directory = 'C:\\Path_to_...
  • Python程序自动使用所有内核。怎么样?

    我正在使用具有12个核心的机器上运行移动平均和SARIMA模型进行时间序列预测。 移动平均模型需要25分钟才能在单个内核上运行。通过使用多处理模块,我可以将运行时间缩短到约4分钟(通过使用12个核中的8个)。通过检查“ top”命令的结果,可以轻松地看到多处理实际上使用了8个内核,并且行为符合预期。 Moving Average(1 core) -> CPU Usage for Moving Average 1 core Moving Average(8 core) -> CPU Usage for Mov...
  • 熊猫多处理代码中的错误-无法调用数据框

    我正在尝试使用多重处理来优化大型文件的距离计算。我已经设计了以下代码,但是谁能解释为什么它引发错误['DataFrame'对象不可调用”? 它似乎与并行化数据框中的“映射”有关,可能是由于我设计test_func的方式引起的,但不确定如何解决。在此先感谢您的帮助。 nearest_calc3 = None nearest_calc3 = postcodes.head(1000).copy() # Test top 1000 partitions = 5 cores = mp.cpu_count() de...
  • 如何在流程之间共享对象?

    我正在开发一个程序,该程序具有2-3个不同的“流程”或“工作流”,它们都需要一次执行(不一定要并行执行,它们都需要同时运行)。这些进程独立运行并独立运行,以执行不同但相关的任务,但它们还需要共享一些对象(列表和变量)。 我想知道实现此目标的最佳方法是什么?为了提供一些基本的背景信息和上下文,这是一个将短信平台与我们的CMS集成的程序。这3个模块分别是发送器,接收器和一个读取新队列并对其排队的模块,称为JobHandler。 我使每个模块都能正常工作,但是我的问题在于将它们捆绑在一起。我实现了多处理,但是当我...
  • 如何制作具有循环的代码,该循环会创建一个非常大的数值数组以更快地运行并最大程度地减少内存

    我有以下代码片段(这只是示例代码): import numpy as np array_copy = array for i in range(0, 20): array = np.kron(array, array_copy) 其中array是要素数组(比如说50个要素),并且代码正在计算数组的自Kronecker张量积。数组本身非常大,我需要将自Kronecker张量乘积提高到20倍,这会使数组更大。 我如何: 1)使代码运行更快。对于大型阵列,Kronecker张量产品本身已经很慢了,我需...
公告

欢迎访问 码农俱乐部  点击这里设置您的邮箱  可以接收站内跟帖、回复邮件提醒,不错过任何一条消息。

关注公众号订阅更多技术干货! 码农俱乐部