我有一个函数执行一些模拟并返回一个字符串格式的数组.
我想运行模拟(函数)来改变输入参数值,超过10000个可能的输入值,并将结果写入单个文件.
我正在使用多处理,特别是pool.map函数来并行运行模拟.
由于运行模拟功能超过10000次的整个过程需要很长时间,我真的想跟踪整个操作的过程.
我认为下面我当前代码中的问题是,pool.map运行该函数10000次,在这些操作期间没有任何进程跟踪.一旦并行处理完成10000次模拟(可能是几小时到几天),那么我会在10000个模拟结果被保存到文件时继续跟踪.所以这并不是真正跟踪pool.map操作的处理.
是否可以轻松修复我的代码,以便进行流程跟踪?
def simFunction(input):
# Does some simulation and outputs simResult
return str(simResult)
# Parallel processing
inputs = np.arange(0,10000,1)
if __name__ == "__main__":
numCores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes = numCores)
t = pool.map(simFunction, inputs)
with open('results.txt','w') as out:
print("Starting to simulate " + str(len(inputs)) + " input values...")
counter = 0
for i in t:
out.write(i + '\n')
counter = counter + 1
if counter%100==0:
print(str(counter) + " of " + str(len(inputs)) + " input …Run Code Online (Sandbox Code Playgroud) 我的程序中存在瓶颈,原因如下:
A = numpy.array([10,4,6,7,1,5,3,4,24,1,1,9,10,10,18])
B = numpy.array([1,4,5,6,7,8,9])
C = numpy.array([i for i in A if i in B])
Run Code Online (Sandbox Code Playgroud)
预期结果C如下:
C = [4 6 7 1 5 4 1 1 9]
Run Code Online (Sandbox Code Playgroud)
有没有更有效的方法来执行此操作?
请注意,数组A包含重复值,需要将它们考虑在内.我无法使用集合交集,因为取交点会省略重复值,只返回[1,4,5,6,7,9].
另请注意,这只是一个简单的演示.实际的阵列大小可以是数千,而不是数百万.
我有两个平面列表,其中一个包含重复值.例如,
array1 = [1,4,4,7,10,10,10,15,16,17,18,20]
array2 = [4,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
我需要在array1中找到也在array2中的值,在array1中保留重复数据.期望的结果将是
result = [4,4,7,10,10,10]
Run Code Online (Sandbox Code Playgroud)
我想避免循环,因为实际数组将包含数百万的值.我尝试了各种设置和交叉组合,但是无法保留重复项.
任何帮助将不胜感激!
我需要使用 python 日志模块来记录熊猫数据帧。我需要同等缩进的整个数据框(所有行)。
以下是简单的所需输出:
Test Dataframe Output Below:
col1 col2
0 1 3
1 2 4
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下输出,其中缩进仅应用于数据帧的第一行:
Test Dataframe Output Below:
col1 col2
0 1 3
1 2 4
Run Code Online (Sandbox Code Playgroud)
我正在运行的示例代码是:
import pandas as pd
import logging
# sample dataframe
test_df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
# logging set up
logging.basicConfig(level=logging.INFO)
logging.getLogger().handlers.clear()
c_handler = logging.StreamHandler()
c_handler.setFormatter(logging.Formatter('%(message)s'))
logging.getLogger().addHandler(c_handler)
# log the pandas dataframe to console
logging.info(f'\tTest Dataframe Output Below:')
logging.info(f'\n\t\t{test_df}')
logging.info(f'{test_df}')
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
我正在尝试安装请求模块,并且 openssl 不断导致 InvalidArchiveError。我在 Windows 10 操作系统上使用 conda 4.7.12、python 3.8.2。在安装需要 openssl-1.1.1g 的其他软件包时,我遇到了同样的问题。我已按照错误消息中的建议删除并重新下载“openssl-1.1.1g-he774522_0.tar.bz2”,但我一直收到相同的错误。这个版本的openssl坏了还是什么?任何帮助将不胜感激。
lykim@Louis MINGW64 ~/Desktop/master/Learning
$ conda install -c anaconda requests
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... done
==> WARNING: A newer version of conda exists. <==
current version: 4.7.12
latest version: 4.8.3
Please update conda by running
$ conda update -n base conda
## Package Plan ##
environment location: C:\ProgramData\Anaconda3\envs\pytorch
added / updated specs:
- requests
The following packages will be downloaded:
package | build
---------------------------|----------------- …Run Code Online (Sandbox Code Playgroud) 我有一个模拟某事的函数,并将结果数组写入文本文件.
例如,
def SimulationFunction(args):
#some simulation which results simOUT
f = open('results.txt','w')
f.write(str(simOUT) + '\n')
f.close()
Run Code Online (Sandbox Code Playgroud)
我想在不同的输入参数上运行该函数,并将输出保存到相同results.txt文件的新行.
例如,
for i in inputArgs:
SimulationFunction(i)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行它时,生成的文本文件仅包含上次模拟运行的结果.
我在这里错过了什么?任何建议将不胜感激!