#!/bin/bash
while IFS="," read ip port; do
ruby test.rb "http://$ip:$port/"&
ruby test.rb "https://$ip:$port/";
done <test1.txt
我将如何做这个多线程?如果我做更多的行除以 & 它只运行相同的命令与相同的 ip&port 更多次,我希望它使用下一个 ip&port 运行,也不相同文件看起来像 192.168.1.2,8089,
#!/bin/bash
while IFS="," read ip port; do
ruby test.rb "http://$ip:$port/"&
ruby test.rb "https://$ip:$port/";
done <test1.txt
我将如何做这个多线程?如果我做更多的行除以 & 它只运行相同的命令与相同的 ip&port 更多次,我希望它使用下一个 ip&port 运行,也不相同文件看起来像 192.168.1.2,8089,
环境:操作系统——debian + python3。
下面的所有输出信息都忽略不重要。
使用 cat /proc/cpuinfo 获取我计算机的 cpu 信息:
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model name : Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model name : Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
这是要测试的 mthreads.py。
import os
import threading
print(os.getpid())
def dead_loop():
while True:
pass
t = threading.Thread(target=dead_loop)
t.start()
dead_loop()
t.join()
在带有 的终端中运行它python3 mthreads.py
,获取3455
作为进程 id 的输出python3 mthreads.py
。
cat /proc/3455/status
Name: python3
Umask: 0022
State: S (sleeping)
Tgid: 3455
Ngid: 0
Pid: 3455
PPid: 2205
Threads: 2
Cpus_allowed: 3
Cpus_allowed_list: 0-1
在终端中运行它。
python3 mthreads.py
3455
1.我的电脑有2个cpu,为什么Cpus_allowed是3,比我的cpu多?
pstree 3455 -p
python3(3455)───{python3}(3456)
2.现在有aer 2个线程在运行,3455是进程号,3456是线程号,另一个线程号是哪个?如何获得第二个线程ID号?
3.我想知道哪个cpu(cpu0,cpu1)上运行的是哪个进程ID?
所以我有一个 100GB 的文本文件,我想把它分成 10000 个文件。我曾经用类似的方法来完成这样的任务:
split -l <number of lines> -d --additional-suffix=.txt bigfile small_files_prefix
但是我试图用这个来做到这一点,我监控了我的系统并意识到它没有使用太多的内存或 CPU,所以我意识到它只是用一个线程从头到尾读取文件。
是否有任何低级(或非常高性能)的工具可以用多个线程完成这样的任务。
如果有必要,我什至更愿意复制文件,如果可能更快的话,我会利用我的多个内核(我不这么认为!)。