小编hax*_*hax的帖子

将来自循环的多个线程排队的最安全方法是什么?

我的脚本遍历输入文件的每一行,并使用每一行中的字符串执行一些操作。由于在每一行上执行的任务是相互独立的,我决定将任务分开,threads这样脚本就不必等待任务完成才能继续循环。代码如下。


def myFunction(line, param):
    # Doing something with line and param
    # Sends multiple HTTP requests and parse the response and produce outputs
    # Returns nothing

param = arg[1]   
with open(targets, "r") as listfile:
    for line in listfile:
        print("Starting a thread for: ",line)
        t=threading.Thread(target=myFunction, args=(line, param,)) 
        threads.append(t)
        t.start()

Run Code Online (Sandbox Code Playgroud)

我意识到这是一个坏主意,因为输入文件中的行数越来越大。使用此代码,线程数将与行数一样多。研究了一下,认为这queues就是方法。

我想了解在这种情况下使用队列的最佳方式,以及是否有任何我可以使用的替代方案。

python queue python-multithreading python-3.x

7
推荐指数
2
解决办法
461
查看次数

在 argparse 中,是否可以将 -h 选项用于“help”以外的任何内容?

我正在编写一段代码,必须将主机名作为可选参数传递。还需要使用 -h 选项传递。

用法:

./program.py -h hostname
Run Code Online (Sandbox Code Playgroud)

Argparse 默认使用 -h 来打印帮助。是否有可能以某种方式覆盖它?

python parameter-passing

4
推荐指数
1
解决办法
1195
查看次数

如何将自定义字符串作为argv [0]传递给程序

我有一个在程序中使用argv [0]的C程序.我知道argv [0]是正在执行的程序的路径.我想将自定义字符串作为argv [0]传递给程序而不是程序名称.有没有办法在shell中执行此操作?

我读了一下exec命令.但我不确定用法.help exec说我必须通过exec -a <string>

  1. 有没有其他方法这样做?
  2. 如果我使用命令传递特殊字符或另一个文件的路径,是否有我需要使用的转义方法exec

澄清问题:

我正在运行一个程序prog1.要输入程序中的特定部分,我必须为程序提供一个SIGALRM.这个步骤本身很难,因为我不得不创建一个围绕条件的竞赛,以便在程序启动时发送信号.

while true;do ./prog1 2; done & while true; do killall -14 prog1; done 
Run Code Online (Sandbox Code Playgroud)

上面的while循环帮助我输入程序的一部分,程序的那部分argv[0]用于系统调用.这个系统调用是system(echo something argv[0])

有没有办法修改上面的while循环而;/bin/myprogram不是argv[0]. 底线: I need /bin/myprogram以特权prog1和输出执行.

unix bash shell

1
推荐指数
1
解决办法
543
查看次数