gpt4 book ai didi

multithreading - 是否多线程

转载 作者:行者123 更新时间:2023-12-03 13:15:49 25 4
gpt4 key购买 nike

我正在创建一个Windows控制台应用程序,它将逐行读取文本文件,并从固定长度数据的字符串中提取数据。该应用程序目前被编写为Windows应用程序,但稍后将转换为Windows控制台应用程序。我注意到,应用程序要花一些时间才能从阅读文本,插入数据库以及从数据库导出的过程中运行。

如果我使用多个线程,是否可以帮助加快进程?我正在考虑一个线程读取数据,而另一个线程将数据插入数据库。

有什么建议吗?

编辑:该应用程序将在VB.net中完成

最佳答案

我将假定这是一个SQL数据库。

您的问题可能是您一次只做一项。 SQL讨厌那样。 SQL和SQL数据库对项的集进行操作。

因此,打开一个事务,读取并插入1,000个项目。保存这些项目,以防事务提交由于某种原因而失败,以便您可以重试。

通过这种技术,我设法加快了一些Perl脚本的执行速度,使它们听起来与您的描述相似,超过了20倍。

我不知道您使用的Microsoft库,但这是使用DBI的Perl中的示例。使它起作用的部分是AutoCommit => 0和$ dbh-> commit。

#!/usr/bin/perl

use strict;
use DBI;

my $dbname = 'urls';
my $user = 'postgres';
my $pass = '';

my $dbh = DBI->connect(
"DBI:Pg:dbname=$dbname",
$user,
$pass,
{ 'RaiseError' => 1, AutoCommit => 0 }
);

my $insert = $dbh->prepare('
INSERT INTO todo (domain, path)
VALUES (?, ?)
');

my $count = 0;
while(<>) {
if( $count++ % 1000 == 0) {
$dbh->commit;
}
chomp;
my ($one, $two) = split;
$insert->execute($one, $two);
}
$dbh->commit;
$dbh->disconnect;

关于multithreading - 是否多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/744352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com